namespace SharpGym.WinRT.Model
{
    using System;

    public class AtividadeAerobica : BaseModel
    {
        private const double EPSILON = 0.0001;
        private Aluno _aluno;
        private double _distancia;
        private double _frequenciaCardiaca;
        private string _nome;
        private DateTime _tempo;
        private Treino _treino;


        public TimeSpan Duracao
        {
            get { return TimeSpan.FromTicks(Tempo.Ticks); }
        }

        public DateTime Tempo
        {
            get { return _tempo; }
            set
            {
                if (Tempo == value)
                    return;

                _tempo = value;
                OnPropertyChanged("Tempo");
            }
        }

        public double Distancia
        {
            get { return _distancia; }
            set
            {
                if (Math.Abs(Distancia - value) < EPSILON)
                    return;

                _distancia = value;
                OnPropertyChanged("Distancia");
            }
        }

        public double FrequenciaCardiaca
        {
            get { return _frequenciaCardiaca; }
            set
            {
                if (Math.Abs(FrequenciaCardiaca - value) < EPSILON)
                    return;

                _frequenciaCardiaca = value;
                OnPropertyChanged("FrequenciaCardiaca");
            }
        }

        public string Nome
        {
            get { return _nome; }
            set
            {
                if (Nome == value)
                    return;

                _nome = value;
                OnPropertyChanged("Nome");
            }
        }

        public Aluno Aluno
        {
            get { return _aluno; }
            set
            {
                _aluno = value;
                OnPropertyChanged("Aluno");
            }
        }

        public virtual Treino Treino
        {
            get { return _treino; }
            set
            {
                _treino = value;
                OnPropertyChanged("Treino");
            }
        }
    }
}